var async=require('async');
var h=require('./helper');


/**
 * 使用异步操作对集合中的元素进行筛选。需要注意的是，iterator的callback只有一个参数，只能接收true或false。
 *
 * 对于出错，该函数没有做出任何处理，直接由nodejs抛出。所以需要注意对Error的处理。
 *
 * async提供了两种方式：
 * 1. 并行执行：filter
 * 2. 顺序执行：filterSereis
 */


var urls=[
    'http://www.1.com',
    'http://www.2.com',
    'http://www.3.com',
    'http://www.4.com',
    'http://www.5.com'
];

async.filter(urls, function (url, cb) {
    h.get(url, function (err, data) {
        h.log(url);
        if(err)throw new Error('Filter Error');
        cb(data.match(/\d/)[0]>2);
    });
}, function (result) {
    h.log('result:',result);
});